The present invention relates in particular to a method and to a computer-implemented device for automated generation and provision of at least one client/server-based, preferably web-based, software application having a user interface for a user.
The conventional approach to creating and providing software applications for use is based on methods and techniques in which software applications are first created by programming and then installed and put into use in an operating environment.
In this approach, software developers first define the business data structure in a specific data model (class model), design the program architecture and put or “translate” the algorithms to be used into programming language (source code). The software developers are usually assisted at each stage by software technologies, procedures and tools that simplify or partly automate the implementation of individual steps in the process.
The prior art in this field is, for example, the “Model-Driven Software Development” (MDSD)/“Model Driven Architecture” (MDA) approach, which in terms of tools is often assisted by integrated development environments (IDE) or frameworks. In Model Driven Software Development, the architecture of the application to be created and parts of the source code (class model) are generated from a model (diagram in the graphical “Unified Modeling Language” or UML diagram for short). Frameworks here provide the structure within which the programmer creates an application, i.e. frameworks usually define the application architecture, the control flow of the application and the interfaces for the specific classes, which must be created and registered by the programmer. The design patterns used in the framework are one of the factors that influence the structure of the custom application. The parts of the source code generated by the MDSD method using the IDE or the framework must still be programmed further, and source code must be added for the (graphical) user interface (GUI), the database interface and further interfaces.
After generation, further programming and adding further code, the source code must be translated into machine code by a compiler in order to make the program machine-readable and hence executable.
Likewise when there are any changes to existing software, the source code must be repeatedly regenerated, bundled into a program and transferred to the runtime environment.
Finally, the created or modified software must be installed on a computer, if necessary configured, and activated in order for the users to be able to use it.
To summarize, in conventional techniques for developing and providing client/server-based, preferably web-based, applications it is hence necessary to:                use tools first to program the source code of the application, which includes, inter alia, the commands to the processor, which controls the subsequent application program,        use tools to translate the source code into machine-readable code and to bundle/compile into an application program,        install the application program on a computer, and        use a runtime environment to launch and control the application program at runtime.        
All current methods and techniques of software development and provision hence have in common that to create or modify software applications, the application logic of a software application must be defined and modeled before the source code can be translated into machine code and the resultant software application can be installed and provided for use. This process is often time-consuming and also is only possible with programming knowledge and hence normally only possible with software experts.
Greater flexibility and adaptability can be achieved by using “business rules” and/or expert systems. These can be used to control, within certain limits, the behavior of a software application at runtime, and to modify said behavior without compiling. This facility, however, is restricted to the application behavior only. It is hence not possible to control all the other elements and aspects of an application (stored data, application logic, interface). Furthermore, the flexibility that can be achieved with this facility relates solely to software applications that already exist and in which the rule-based technology is implemented. It hence cannot be used for flexible generation of entirely new applications.
For larger server-based and database-based software systems, e.g. often in company solutions, there is the additional factor that in addition to programming knowledge, there is also a need for specific IT experience for installation and launching, which requires additional IT experts.
In the various departments and administration of organizations of any size, however, which face the need for greater agility, there is an increasing demand for fast availability of software solutions for pressing tasks and problems, whether through entirely new applications or by adapting existing applications to changed requirements and circumstances. This also applies to a demand for solutions that are required only in the short term or need to be deployed only in the interim or for a specific project.
The users, however, are not normally capable of solving the technical questions associated with creating, providing and operating the applications. The current methods and technologies of software creation and provision are hence little suited in particular to organizations that must remain agile in an increasingly competitive environment.